using System;
using System.Runtime.CompilerServices;
using System.Web;
using Dimok.Data;

////////////////////////////////////////////////////////////////////////////////////////////////////
// namespace: Dimok.Config.imaging
//
// summary:	.
////////////////////////////////////////////////////////////////////////////////////////////////////

namespace Dimok.Config.imaging{

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>	Ws. </summary>
	///
	/// <remarks>	Dimon, 11/24/2010. </remarks>
	////////////////////////////////////////////////////////////////////////////////////////////////////

	public class WS : RegistryBase{

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the full pathname of the image file. </summary>
		///
		/// <value>	The full pathname of the image file. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string ImagePath{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the extentions. </summary>
		///
		/// <value>	The extentions. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string[] Extentions{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().Split(',');}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the long name template. </summary>
		///
		/// <value>	The long name template. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string LongNameTemplate{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the default content type. </summary>
		///
		/// <value>	The default content type. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string DefaultContentType{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the default content type bulk. </summary>
		///
		/// <value>	The default content type bulk. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string DefaultContentTypeBulk{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>	Pdf. </summary>
	///
	/// <remarks>	Dimon, 11/24/2010. </remarks>
	////////////////////////////////////////////////////////////////////////////////////////////////////

	public class PDF : RegistryBase{

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether the flatten fields. </summary>
		///
		/// <value>	true if flatten fields, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static bool FlattenFields{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return bool.Parse(GetConfigValue());}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets URL of the form post. </summary>
		///
		/// <value>	The form post url. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string FormPostUrl{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}
		//public static string PDFPostURL{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{ return HttpContext.Current.Request["SERVER_PROTOCOL"].Split('/')[0]+"://"+HttpContext.Current.Request["HTTP_HOST"]+"/"+GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether the prep tools. </summary>
		///
		/// <value>	true if prep tools, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static bool PrepTools {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return Convert.ToBoolean(GetConfigValue(false));}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether this object use prep tools. </summary>
		///
		/// <value>	true if use prep tools, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static bool UsePrepTools {get{return PrepTools;}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether the dynamic pdf. </summary>
		///
		/// <value>	true if dynamic pdf, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static bool DynamicPDF { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return Convert.ToBoolean(GetConfigValue(false)); } }

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether the abc pdf. </summary>
		///
		/// <value>	true if abc pdf, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static bool AbcPDF { [MethodImplAttribute(MethodImplOptions.NoInlining)]get { return Convert.ToBoolean(GetConfigValue(false)); } }

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether the remote. </summary>
		///
		/// <value>	true if remote, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static bool	 Remote{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return bool.Parse(GetConfigValue());}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the server. </summary>
		///
		/// <value>	The server. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Server{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the port. </summary>
		///
		/// <value>	The port. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static int		 Port{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return int.Parse(GetConfigValue());}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets URL of the document. </summary>
		///
		/// <value>	The url. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Url{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets or sets the tcp. </summary>
		///
		/// <value>	The tcp. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string TCP{get{return "tcp://"+Server+":"+Port+"/"+Url;}}
	}

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>	Word. </summary>
	///
	/// <remarks>	Dimon, 11/24/2010. </remarks>
	////////////////////////////////////////////////////////////////////////////////////////////////////

	public class Word : RegistryBase {
		public static bool RemoveFieldFormats{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return bool.Parse(GetConfigValue());}}
		public static string Server{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}
		public static string Url {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}
		public static string Port {[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue();}}
		public static string TCP{get{return "tcp://"+Server+":"+Port+"/"+Url;}}

	}

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>	Ocr. </summary>
	///
	/// <remarks>	Dimon, 11/24/2010. </remarks>
	////////////////////////////////////////////////////////////////////////////////////////////////////

	public class OCR : RegistryBase {

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the engine. </summary>
		///
		/// <value>	The engine. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Engine{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the accuracy. </summary>
		///
		/// <value>	The accuracy. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Accuracy{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}
		public static int DelayConvert{
			[MethodImplAttribute(MethodImplOptions.NoInlining)]
			get{
				try{
					return int.Parse(GetConfigValue());
				}catch{return 500;}
			}
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the delay reset. </summary>
		///
		/// <value>	The delay reset. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static int DelayReset{
			[MethodImplAttribute(MethodImplOptions.NoInlining)]
			get{
				try{
					return int.Parse(GetConfigValue());
				}catch{return 500;}
			}
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the delay release. </summary>
		///
		/// <value>	The delay release. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static int DelayRelease{
			[MethodImplAttribute(MethodImplOptions.NoInlining)]
			get{
				try{
					return int.Parse(GetConfigValue());
				}catch{return 500;}
			}
		}

		// Remoting

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the server. </summary>
		///
		/// <value>	The server. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Server{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the port. </summary>
		///
		/// <value>	The port. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Port{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets URL of the document. </summary>
		///
		/// <value>	The url. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Url{[MethodImplAttribute(MethodImplOptions.NoInlining)]get{return GetConfigValue().ToLower();}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets the tcp. </summary>
		///
		/// <value>	The tcp. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public static string Tcp{get{return "tcp://"+Server+":"+Port+"/"+Url;}}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Accuracies. </summary>
		///
		/// <remarks>	Dimon, 11/24/2010. </remarks>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public struct Accuracies{
			public const string Accurate = "accurate";
			public const string Balanced = "balanced";
			public const string Fast		 = "fast";
		}
	}
}